package MUSI.Deusto.curso20112012;

import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import MUSI.Deusto.curso20112012.herramientas.Constantes;
import MUSI.Deusto.curso20112012.herramientas.PDF.ArchivosPDFEnDispositivo;
import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class ArchivosSDActivity extends Activity {

	private List<ArchivosPDFEnDispositivo> listaArchivosEnTarjeta;
	private List<String> listaArchivosMUSI;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		setContentView(R.layout.principalmostrararchivos);

		// obtenemos los archivos de MUSI
		this.listaArchivosMUSI = this.obtenerNombresDeFicherosMUSI();

		ListView lv = (ListView) findViewById(R.id.MostrarArchivosListView);
		lv.setAdapter(new miAdapter(this, this.listaArchivosMUSI));

		lv.setOnItemClickListener(new OnItemClickListener() {
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {
				// When clicked, show a toast with the TextView text
				View vista = view.findViewById(R.id.ListaArchivosNombre);
				String nombreArchivo = (String) ((TextView) vista).getText();
				Toast.makeText(getApplicationContext(), nombreArchivo,
						Toast.LENGTH_SHORT).show();
				// abrimos el archivo

				File file = new File(Constantes.CARPETAMUSI + "/"
						+ nombreArchivo);

				if (file.exists()) {
					Uri path = Uri.fromFile(file);
					Intent intent = new Intent(Intent.ACTION_VIEW);
					intent.setDataAndType(path, "application/pdf");
					intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

					try {
						startActivity(intent);
					} catch (ActivityNotFoundException e) {
						Toast.makeText(ArchivosSDActivity.this,
								"No Application Available to View PDF",
								Toast.LENGTH_SHORT).show();
					}
				}

			}
		});

		// Intent contenedor = new Intent(this, MUSIDeustoActivity.class);
		// // contenedor.putExtra("usuario", user);
		// // contenedor.putExtra("pass", pass);
		// startActivity(contenedor);

	}

	private List<String> obtenerNombresDeFicherosMUSI() {
		// obtenemos los archivos de la carpeta MUSI
		this.listaArchivosEnTarjeta = this.obtenerFicherosPDF();
		List<String> data = null;

		if (this.listaArchivosEnTarjeta != null) {
			data = new ArrayList<String>();
			Iterator<ArchivosPDFEnDispositivo> it = this.listaArchivosEnTarjeta
					.iterator();
			while (it.hasNext()) {
				data.add((it.next()).getNombre());
			}
		}
		return data;
	}

	private List<ArchivosPDFEnDispositivo> obtenerFicherosPDF() {
		List<ArchivosPDFEnDispositivo> listaArchivos = null;

		File srcFileDirectory = new File(Constantes.CARPETAMUSI);
		// comprobamos si existe
		if (!srcFileDirectory.exists()) {
			srcFileDirectory.mkdir();
		} else {
			listaArchivos = new ArrayList<ArchivosPDFEnDispositivo>();
			// File archivo;
			File[] filesInDirectory = srcFileDirectory.listFiles();
			for (File f : filesInDirectory) {
				listaArchivos.add(new ArchivosPDFEnDispositivo(f
						.getAbsolutePath(), (f.getName())));
			}

		}
		// ****************************
		return listaArchivos;
	}

	// **********************************************
	private static class miAdapter extends BaseAdapter {
		private LayoutInflater mInflater;
		private String[] data = { "Lista vacia" };

		public miAdapter(Context context, List<String> lista) {
			if ((lista != null) && (lista.size() > 0)) {
				Iterator<String> it = lista.iterator();
				this.data = new String[lista.size()];
				int pos = 0;
				while (it.hasNext()) {
					this.data[pos++] = it.next();
				}
			}
			mInflater = LayoutInflater.from(context);
		}

		public View getView(int position, View convertView, ViewGroup parent) {
			TextView text;
			ImageView img1;
			if (convertView == null) {
				convertView = mInflater.inflate(R.layout.listaarchivos, null);
			}
			text = (TextView) convertView
					.findViewById(R.id.ListaArchivosNombre);
			if (!this.data[0].equals("Lista vacia")) {
				img1 = (ImageView) convertView
						.findViewById(R.id.ListaArchivosIcono);
				img1.setImageResource(R.drawable.iconito);
			}

			text.setText(data[position]);

			return convertView;
		}

		public int getCount() {
			return data.length;
		}

		public Object getItem(int position) {
			return position;
		}

		public long getItemId(int position) {
			return position;
		}
	}

}
